<?php
/**
 * CSqliteCommandBuilder class file.
 *
 * @author Qiang Xue <qiang.xue@gmail.com>
 * @link http://www.yiiframework.com/
 * @copyright Copyright &copy; 2008-2011 Yii Software LLC
 * @license http://www.yiiframework.com/license/
 */

/**
 * CSqliteCommandBuilder provides basic methods to create query commands for SQLite tables.
 *
 * @author Qiang Xue <qiang.xue@gmail.com>
 * @version $Id: CSqliteCommandBuilder.php 2799 2011-01-01 19:31:13Z qiang.xue $
 * @package system.db.schema.sqlite
 * @since 1.0
 */
class CSqliteCommandBuilder extends CDbCommandBuilder
{
    /**
     * Generates the expression for selecting rows with specified composite key values.
     * This method is overridden because SQLite does not support the default
     * IN expression with composite columns.
     * @param CDbTableSchema $table the table schema
     * @param array $values list of primary key values to be selected within
     * @param string $prefix column prefix (ended with dot)
     * @return string the expression for selection
     * @since 1.0.4
     */
    protected function createCompositeInCondition($table,$values,$prefix)
    {
        $keyNames=array();
        foreach(array_keys($values[0]) as $name)
        $keyNames[]=$prefix.$table->columns[$name]->rawName;
        $vs=array();
        foreach($values as $value)
        $vs[]=implode("||','||",$value);
        return implode("||','||",$keyNames).' IN ('.implode(', ',$vs).')';
    }
}
